影片連結:https://www.youtube.com/watch?v=8lwvTtUKmOI
YouTube 頻道:https://www.youtube.com/c/kaochenlong
今天要跟大家介紹的是 n8n 裡面一個相當重要的主題:怎麼樣抓取網路資料。
為什麼說這很重要呢?因為在做自動化工作流的時候,第一步往往就是要取得資料。就像做菜需要食材一樣,沒有資料,後面什麼自動化處理都沒辦法進行。
根據資料來源和呈現方式的不同,我把抓資料的方法分成三大類來介紹:
這類資料有明確的結構,容易解析處理:
就算你沒聽過這些格式也別擔心,在 n8n 裡面都有對應的節點可以快速解析。
當網站沒有提供 JSON 或 RSS 格式時,我們就得硬爬 HTML 網頁內容。這個我們下一集會詳細介紹。
最麻煩的就是這種了。很多現代電商網站,如果你去檢視原始碼會發現頁面簡單到不行,但實際上卻能呈現大量資料。那是因為資料是進入網站後才動態產生的。這種對 n8n 來說相當不友善,但我們還是有解法,這會在第三集介紹。
好,今天這一集就是「首部曲」,先來學習怎麼抓取那些比較簡單、有結構性的資料。
首先,我們需要找到 YouBike 的 API。在 Google 搜尋「YouBike API」,可以找到台北市 YouBike 2.0 的資料。點進去後會看到:
在瀏覽器中打開這個 API 網址,會看到密密麻麻的 JSON 資料。如果你用的是 Chrome 瀏覽器,可以勾選美化排版,這樣會好看很多。每個大括號 {}
包起來的就是一個站點資料,例如:
{
"sno": "500101001",
"sna": "YouBike2.0_捷運科技大樓站",
"sarea": "大安區",
"mday": "2025-09-20 21:12:16",
"ar": "復興南路二段235號前",
"sareaen": "Daan Dist.",
"snaen": "YouBike2.0_MRT Technology Bldg. Sta.",
"aren": "No.235, Sec. 2, Fuxing S. Rd.",
"act": "1",
"srcUpdateTime": "2025-09-20 21:18:29",
"updateTime": "2025-09-20 21:18:52",
"infoTime": "2025-09-20 21:12:16",
"infoDate": "2025-09-20",
"Quantity": 28,
"available_rent_bikes": 4,
"latitude": 25.02605,
"longitude": 121.5436,
"available_return_bikes": 24
}
建立新工作流
加入手動觸發節點
加入 HTTP Request 節點
現在我們有了 1600 多筆站點資料,但通常我們只需要特定條件的資料。比如說,我只想找中正區羅斯福路附近的站點。
第一層過濾:找出「中正區」的站點
sarea
欄位到條件設定區第二層過濾:找出羅斯福路的站點
ar
(地址)欄位第三層過濾:找出車輛充足的站點
available_rent_bikes
(可借車輛數)欄位為了讓工作流更容易理解,建議幫節點改個有意義的名字:
這樣整個流程就一目了然了!
這裡分享一個我很常用的技巧。當你在開發測試時,每次執行都要重新抓資料,不但慢,如果 API 要收費的話還很花錢。
解決方法:使用 Pin Data 功能
注意事項:
除了 JSON 格式,RSS 也是常見的結構化資料。很多新聞網站都有提供 RSS。
以總統府網站為例,通常可以在網站上找到 RSS 連結。點進去後會看到 XML 格式的結構化資料(不是給人看的,是給程式讀的)。
取得資料後,後續的過濾和處理方式就跟處理 JSON 一模一樣了!
今天介紹的抓資料流程其實很單純:
這個流程跟我們之前做的隨機寶可夢範例一模一樣,都是:取得資料 → 過濾條件 → 得到結果。
今天我們處理的都是有結構的資料,相對簡單。但如果網站只有 HTML 頁面,沒有提供 JSON 或 RSS 怎麼辦?沒問題,下一集我們就來看看怎麼爬取 HTML 網頁資料。